﻿namespace Blaze.Framework.LuaExtensions
{
    using System.Text.RegularExpressions;

    /// <summary>
    /// 为Lua提供.Net类似的文本格式化功能。
    /// </summary>
    public static class StringUtility
    {
        /// <summary>
        /// 同string.Contains
        /// </summary>
        public static bool Contains(string input, string find)
        {
            if (input == null)
                return false;
            return input.Contains(find);
        }

        /// <summary>
        /// 同string.Format。
        /// </summary>
        public static string Format(string format, params object[] args)
        {
            return string.Format(format, args);
        }

        /// <summary>
        /// 获取指定文本的长度，中文占2个，英文占1个。
        /// </summary>
        /// <param name="input">文本</param>
        /// <returns>长度</returns>
        public static int GetByteCount(string input)
        {
            if (input == null)
                return 0;
            var ret = 0;
            for (var index = 0; index < input.Length; index++)
            {
                var c = input[index];
                if (c < 0x100)
                    ret += 1;
                else
                    ret += 2;
            }
            return ret;
        }

        /// <summary>
        /// 获取指定的字符串长度。
        /// </summary>
        /// <param name="input">需要判断的字符串</param>
        public static int GetLength(string input)
        {
            return input.Length;
        }

        /// <summary>
        /// 按UTF8编码格式获取字节数组中的文本。
        /// </summary>
        /// <param name="array">字节数字</param>
        /// <returns></returns>
        public static string GetString(byte[] array)
        {
            var ret = System.Text.Encoding.UTF8.GetString(array);
            return ret;
        }

        /// <summary>
        /// 检测字符串是否匹配指定的正则表达式。
        /// </summary>
        /// <param name="pattern">正则表达式</param>
        /// <param name="input">字符串</param>
        /// <returns>是否匹配</returns>
        public static bool RegexMatch(string pattern, string input)
        {
            return Regex.IsMatch(input, pattern);
        }

        /// <summary>
        /// 同string.Substring。
        /// </summary>
        public static string Substring(string input, int startIndex)
        {
            return input.Substring(startIndex);
        }

        /// <summary>
        /// 同string.Substring。
        /// </summary>
        public static string Substring(string input, int startIndex, int length)
        {
            return input.Substring(startIndex, length);
        }
    }
}